﻿//#region << 文 件 说 明 >>
///*----------------------------------------------------------------
//// 文件名称：CreateCode
//// 创 建 者：杨程
//// 创建时间：2021/9/1 17:29:05
//// 文件版本：V1.0.0
//// ===============================================================
//// 功能描述：
////		
////
////----------------------------------------------------------------*/
//#endregion

//using System;
//using System.Collections.Generic;
//using System.Data;
//using System.Data.SqlClient;
//using System.Data.SqlTypes;
//using System.IO;
//using System.Linq;
//using System.Reflection;
//using System.Security.Policy;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
//using System.Windows.Documents;
//using System.Windows.Shapes;
//using Microsoft.Build.Evaluation;
//using Microsoft.CodeAnalysis;

//namespace V.CodeGenerator.ViewModel.Common
//{
//    public delegate void ProcessDelegate(int val);//声明委托
//    /// <summary>
//    /// 代码生成
//    /// </summary>
//    public class CreateCode
//    {
//        #region 变量
//        public static event ProcessDelegate ProcessIn;//事件
//        private static string server;//服务器
//        private static string database;//数据库
//        private static string name;//登录名
//        private static string pwd;//密码
//        private static bool connType;//true为Sql模式,False为Win模式

//        private static string dbutilityGuid;//db类
//        private static string modelGuid;//模型层
//        private static string sqlserverdalGuid;//DAL层
//        private static string bllGuid;//BLL层
//        private static string uilGuid;//UI层 
//        #endregion
//        #region 生成代码
//        public static void CreateCodes(string serverPath, string serverName, string nameSpace, string databaseName, string loginName, string loginPwd, string sourcePath, bool projectType, bool ConnType)
//        {
//            Thread thread = new Thread(new ThreadStart(() =>
//            {
//                //获得链接信息
//                server = serverName;
//                database = databaseName;
//                name = loginName;
//                pwd = loginPwd;
//                connType = ConnType;
//                //存储路径
//                string solutionPath = serverPath + "\\" + nameSpace;
//                //初始化进度条
//                ProcessIn?.Invoke(0);
//                CreateFolders(solutionPath, projectType);//创建项目目录
//                ProcessIn?.Invoke(1);
//                CreateDBUtility(serverPath, nameSpace, sourcePath);//创建DBUtility项目
//                ProcessIn?.Invoke(2);
//                CreateModel(serverPath, nameSpace, sourcePath);//生成Model项目
//                ProcessIn?.Invoke(3);
//                CreateDAL(serverPath, nameSpace, sourcePath);//生成DAL层
//                ProcessIn?.Invoke(4);
//                CreateBLL(serverPath, nameSpace, sourcePath);//生成BLL层
//                ProcessIn?.Invoke(5);
//                if (projectType)
//                {
//                    CreateWeb(serverPath, nameSpace, sourcePath);//生成web
//                }
//                else
//                {
//                    CreateWin(serverPath, nameSpace, sourcePath);//生成窗体
//                }
//                ProcessIn?.Invoke(6);
//                CreateSolution(serverPath, nameSpace, sourcePath, projectType);//生成解决方案
//                ProcessIn?.Invoke(7);
//            }));
//            thread.IsBackground = true;
//            thread.Start();
//        }
//        #endregion
//        #region 数据库有关的公用方法
//        #region 返回连接语句
//        /// <summary>
//        /// 连接语句
//        /// </summary>
//        /// <returns>连接数据库字符串</returns>
//        private static string GetConn()
//        {
//            //链接模式 true为Sql模式,False为Win模式
//            return connType ?
//                string.Format("server={0};database={1};uid={2};pwd={3}", server, database, name, pwd) :
//                string.Format("server={0};database={1};Integrated Security=True", server, database);
//        }
//        #endregion
//        #region 获取所有当前数据库中的表
//        /// <summary>
//        /// 获取所有当前数据库中的表
//        /// </summary>
//        /// <returns>当前数据库中的表名数组</returns>
//        private static string[] GetTableNames()
//        {
//            string sql = "select name from sysobjects where type='U' and name<>'sysdiagrams'";
//            SqlDataReader reader = SQLHelper.ExecuteReader(GetConn(), CommandType.Text, sql);
//            List<string> tableList = new List<string>();
//            while (reader.Read())
//            {
//                tableList.Add("[" + reader[0].ToString() + "]");
//            }
//            reader.Close();
//            return tableList.ToArray();
//        }
//        #endregion
//        #region 获取表中的自增列字段
//        /// <summary>
//        /// 获取表中的自增列字段
//        /// </summary>
//        /// <param name="tableName">要查询的表</param>
//        /// <returns>单个自增列字段</returns>
//        private static string GetIdentityField(string tableName)
//        {
//            string fieldName = null;
//            string sql = "SELECT column_name FROM INFORMATION_SCHEMA.columns " +
//                         "WHERE TABLE_NAME='" + tableName + "' AND  " +
//                         "COLUMNPROPERTY(OBJECT_ID('" + tableName + "'),COLUMN_NAME,'IsIdentity')=1";
//            SqlDataReader reader = SQLHelper.ExecuteReader(GetConn(), CommandType.Text, sql);
//            if (reader.Read())
//            {
//                fieldName = reader[0].ToString();
//            }
//            reader.Close();
//            return fieldName;
//        }
//        #endregion
//        #region 将数据库字段类型转换成C#中使用类型
//        /// <summary>
//        /// 将数据库字段类型转换成C#中使用类型
//        /// </summary>
//        /// <param name="typeName">数据库类型</param>
//        /// <returns>C#类型</returns>
//        private static string ChangeTypeName(string typeName)
//        {
//            string type = null;
//            switch (typeName.ToLower())
//            {
//                case "int":
//                    type = "int?";
//                    break;
//                case "bigint":
//                    type = "Int64?";
//                    break;
//                case "text":
//                case "ntext":
//                case "char":
//                case "varchar":
//                case "nchar":
//                case "nvarchar":
//                    type = "string";
//                    break;
//                case "numeric":
//                case "decimal":
//                case "money":
//                case "smallmoney":
//                    type = "decimal?";
//                    break;
//                case "real":
//                    type = "Single?";
//                    break;
//                case "image":
//                case "timestamp":
//                case "binary":
//                case "uniqueidentifier":
//                case "varbinary":
//                case "xml":
//                    type = "Object";
//                    break;
//                case "tinyint":
//                    type = "byte?";
//                    break;
//                case "float":
//                    type = "double?";
//                    break;
//                case "date":
//                case "datetime":
//                case "smalldatetime":
//                    type = "DateTime?";
//                    break;
//                case "bit":
//                    type = "bool?";
//                    break;
//                default:
//                    type = "string";
//                    break;
//            }
//            return type;
//        }
//        #endregion
//        #region 获取表的列信息
//        /// <summary>
//        /// 获取表的列信息
//        /// </summary>
//        /// <param name="tebleName">要查询的表</param>
//        /// <returns>返回列信息集合</returns>
//        public static List<ColumnContent> GetColumns(string tebleName, string connectionString = "")
//        {
//            string sql = string.Format(@"SELECT  CASE WHEN EXISTS
//                           (SELECT     1    FROM   sysobjects
//                            WHERE   xtype = 'PK' AND parent_obj = a.id AND name IN
//                            (SELECT  name   FROM    sysindexes    WHERE      indid IN
//                            (SELECT  indid   FROM   sysindexkeys                                
//                            WHERE  id = a.id AND colid = a.colid))) THEN '1' ELSE '0' END AS 'key',
//                            CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 
//                            THEN '1' ELSE '0' END AS 'identity', a.name AS ColName, c.name AS TypeName, a.length AS 'byte', 
//                            COLUMNPROPERTY(a.id, a.name, 
//                      'PRECISION') AS 'length', a.xscale, a.isnullable, ISNULL(e.text, '') AS 'default', ISNULL(p.value, '') AS 'comment'
//FROM         sys.syscolumns AS a INNER JOIN 
//                      sys.sysobjects AS b ON a.id = b.id INNER JOIN
//                      sys.systypes AS c ON a.xtype = c.xtype LEFT OUTER JOIN
//                      sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN
//                      sys.extended_properties AS p ON a.id = p.major_id AND a.colid = p.minor_id
//WHERE     (b.name = @Table) AND (c.status <> '1')
//            ");
//            SqlParameter[] par = new SqlParameter[]{
//                new SqlParameter("Table",tebleName)
//            };
//            //SqlDataReader red=new SqlDataReader();
//            //获取表的列信息
//            if (!string.IsNullOrEmpty(connectionString))
//            {
//                SqlDataReader red = SQLHelper.ExecuteReader(connectionString, CommandType.Text, sql, par);

//                List<ColumnContent> list = new List<ColumnContent>();
//                while (red.Read())
//                {
//                    ColumnContent cc = new ColumnContent();
//                    cc.Key = Convert.ToInt32(red["Key"]) == 1;
//                    cc.Identity = Convert.ToInt32(red["Identity"]) == 1;
//                    cc.ColName = (string)red["ColName"];
//                    cc.TypeName = ChangeTypeName((string)red["TypeName"]);
//                    cc.Byte = Convert.ToInt32(red["Byte"]);
//                    cc.Length = (int)red["Length"];
//                    cc.Xscale = Convert.ToInt32(red["Xscale"]);
//                    cc.Isnullable = Convert.ToInt32(red["Isnullable"]) == 1;
//                    cc.Default = (string)red["Default"];
//                    cc.Comment = (string)red["Comment"];
//                    list.Add(cc);
//                }
//                red.Close();
//                return list;
//            }
//            else
//            {
//                SqlDataReader red = SQLHelper.ExecuteReader(GetConn(), CommandType.Text, sql, par);

//                List<ColumnContent> list = new List<ColumnContent>();
//                while (red.Read())
//                {
//                    ColumnContent cc = new ColumnContent();
//                    cc.Key = Convert.ToInt32(red["Key"]) == 1;
//                    cc.Identity = Convert.ToInt32(red["Identity"]) == 1;
//                    cc.ColName = (string)red["ColName"];
//                    cc.TypeName = ChangeTypeName((string)red["TypeName"]);
//                    cc.Byte = Convert.ToInt32(red["Byte"]);
//                    cc.Length = (int)red["Length"];
//                    cc.Xscale = Convert.ToInt32(red["Xscale"]);
//                    cc.Isnullable = Convert.ToInt32(red["Isnullable"]) == 1;
//                    cc.Default = (string)red["Default"];
//                    cc.Comment = (string)red["Comment"];
//                    list.Add(cc);
//                }
//                red.Close();
//                return list;
//            }


//        }
//        #endregion
//        #endregion
//        #region 创建解决方案并生成代码
//        #region 在磁盘创建项目目录
//        /// <summary>
//        /// 创建项目目录
//        /// </summary>
//        /// <param name="solutionPath">解决方案路径</param>
//        /// <param name="projectType">解决方案类型</param>
//        private static void CreateFolders(string solutionPath, bool projectType)
//        {
//            Directory.CreateDirectory(solutionPath + "\\DBUtility\\Properties");
//            Directory.CreateDirectory(solutionPath + "\\Model\\Properties");
//            Directory.CreateDirectory(solutionPath + "\\DAL\\Properties");
//            Directory.CreateDirectory(solutionPath + "\\BLL\\Properties");
//            //是web项目
//            if (projectType)
//            {
//                Directory.CreateDirectory(solutionPath + "\\WebUI");
//            }
//            else
//            {//是winform项目
//                Directory.CreateDirectory(solutionPath + "\\WinUI\\Properties");
//            }
//        }
//        #endregion
//        #region 生成DBUtility项目
//        /// <summary>
//        /// 生成DBUtility项目
//        /// </summary>
//        /// <param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateDBUtility(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\DBUtility";

//            //写AssemblyInfo文件
//            StreamReader sr = new StreamReader(sourcePath + "\\AssemblyInfo.cs", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            str = str.Replace("{project name}", "DBUtility")
//                     .Replace("{guid}", Guid.NewGuid().ToString().ToLower())
//                     .Replace("{year}", DateTime.Today.Year.ToString());
//            sr.Close();
//            StreamWriter sw = new StreamWriter(path + "\\Properties\\AssemblyInfo.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();

//            //写SQLHelper文件
//            sr = new StreamReader(sourcePath + "\\SQLHelper.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            str = str.Replace("{namespace}", nameSpace);
//            sw = new StreamWriter(path + "\\SQLHelper.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();

//            //写csproj项目文件
//            dbutilityGuid = Guid.NewGuid().ToString().ToUpper();
//            sr = new StreamReader(sourcePath + "\\Project.csproj", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            str = str.Replace("{guid}", dbutilityGuid)
//                     .Replace("{namespace}", nameSpace)
//                     .Replace("{project name}", "DBUtility")
//                     .Replace("{reference assembly}", "<Reference Include=\"System.configuration\" />")
//                     .Replace("{reference project}", "")
//                     .Replace("{include files}", "<Compile Include=\"SQLHelper.cs\" />");
//            sw = new StreamWriter(path + "\\DBUtility.csproj", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成Model项目
//        /// <summary>
//        /// 生成Model项目
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateModel(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\Model";
//            //写AssemblyInfo文件
//            StreamReader sr = new StreamReader(sourcePath + "\\AssemblyInfo.cs", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            str = str.Replace("{project name}", "Model")
//                     .Replace("{guid}", Guid.NewGuid().ToString().ToLower())
//                     .Replace("{year}", DateTime.Today.Year.ToString());
//            sr.Close();
//            StreamWriter sw = new StreamWriter(path + "\\Properties\\AssemblyInfo.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //实体类
//            string[] tableNames = GetTableNames();
//            foreach (string tableName in tableNames)
//            {
//                List<ColumnContent> list = GetColumns(tableName.ToDelKh());
//                StringBuilder sb = new StringBuilder();
//                StringBuilder Par = new StringBuilder();
//                StringBuilder Set = new StringBuilder();
//                for (int i = 0; i < list.Count; i++)
//                {
//                    ColumnContent ct = list[i];
//                    //带参构造参数
//                    Par.Append(ct.TypeName + " " + ct.ColName.ToPascal() + (i < list.Count - 1 ? ", " : ""));
//                    //带参构造赋值
//                    Set.Append("            this." + ct.ColName.ToPascal() + " = " + ct.ColName.ToPascal() + ";" + (i < list.Count - 1 ? "\r\n" : ""));
//                    //自动属性
//                    sb.Append("        /// <summary>\r\n");
//                    sb.Append("        /// " + ct.Comment.Replace("\r", "").Replace("\n", "").Trim() + "\r\n");
//                    sb.Append("        /// </summary>\r\n");
//                    sb.Append("        public " + ct.TypeName + " " + ct.ColName.ToPascal() + " { get; set; }" + (i < list.Count - 1 ? "\r\n\r\n" : ""));
//                }
//                sr = new StreamReader(sourcePath + "\\Model.cs", Encoding.UTF8);
//                str = sr.ReadToEnd();
//                sr.Close();
//                str = str.Replace("{namespace}", nameSpace)
//                         .Replace("{classname}", tableName.ToPascal())
//                         .Replace("{properties}", sb.ToString())
//                         .Replace("{propertiesPar}", Par.ToString())
//                         .Replace("{propertiesSet}", Set.ToString());
//                sw = new StreamWriter(path + "\\" + tableName.ToPascal() + ".cs", false, Encoding.UTF8);
//                sw.Write(str);
//                sw.Close();
//            }
//            //写csproj项目文件
//            modelGuid = Guid.NewGuid().ToString().ToUpper();
//            sr = new StreamReader(sourcePath + "\\Project.csproj", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            StringBuilder includeFiles = new StringBuilder();
//            foreach (string table in tableNames)
//            {
//                includeFiles.Append("    <Compile Include=\"" + table.ToPascal() + ".cs\" />\r\n");
//            }
//            str = str.Replace("{guid}", modelGuid)
//                     .Replace("{namespace}", nameSpace)
//                     .Replace("{project name}", "Model")
//                     .Replace("{reference assembly}", "")
//                     .Replace("{reference project}", "")
//                     .Replace("{include files}", includeFiles.ToString());
//            sw = new StreamWriter(path + "\\Model.csproj", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成DAL项目
//        /// <summary>
//        /// 生成DAL项目
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateDAL(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\DAL";
//            //写AssemblyInfo文件
//            StreamReader sr = new StreamReader(sourcePath + "\\AssemblyInfo.cs", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            str = str.Replace("{project name}", "DAL")
//                     .Replace("{guid}", Guid.NewGuid().ToString().ToLower())
//                     .Replace("{year}", DateTime.Today.Year.ToString());
//            sr.Close();
//            StreamWriter sw = new StreamWriter(path + "\\Properties\\AssemblyInfo.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写Service文件
//            string[] tables = GetTableNames();
//            foreach (string table in tables)
//            {
//                List<ColumnContent> list = GetColumns(table.ToDelKh());
//                string insertFieldList = string.Empty;
//                string insertValueList = string.Empty;
//                string insertParamList = string.Empty;
//                StringBuilder selectConditionList = new StringBuilder();
//                StringBuilder selectSetProperty = new StringBuilder();
//                StringBuilder updateFields = new StringBuilder();

//                for (int i = 0; i < list.Count; i++)
//                {
//                    ColumnContent ct = list[i];
//                    if (!ct.Identity)
//                    {
//                        insertFieldList += string.Format("{0},", ct.ColName);
//                        insertValueList += string.Format("@{0},", ct.ColName.ToPascal().ToUpper());
//                        insertParamList += string.Format("                new SqlParameter(\"@{0}\",{1}.{2} == null ? Convert.DBNull : {1}.{2}),\r\n", ct.ColName.ToPascal().ToUpper(), table.ToCamel(), ct.ColName.ToPascal());
//                        updateFields.AppendFormat(
//                                    "            if ({0}.{1} != null)\r\n" +
//                                    "            {{\r\n" +
//                                    "                fields += \"{2}=@Update{3},\";\r\n" +
//                                    "                paraList.Add(new SqlParameter(\"@Update{3}\", {0}.{1}));\r\n" +
//                                    "            }}{4}",
//                                    table.ToCamel(), ct.ColName.ToPascal(), ct.ColName, ct.ColName.ToPascal().ToUpper(), (i < list.Count - 1 ? "\r\n" : ""));

//                    }

//                    selectConditionList.AppendFormat(
//                                    "            if ({0}.{1} != null)\r\n" +
//                                    "            {{\r\n" +
//                                    "                sql += \" and {2}=@{3}\";\r\n" +
//                                    "                paraList.Add(new SqlParameter(\"@{3}\", {0}.{1}));\r\n" +
//                                    "            }}{4}",
//                                    table.ToCamel(), ct.ColName.ToPascal(), ct.ColName, ct.ColName.ToPascal().ToUpper(), (i < list.Count - 1 ? "\r\n" : ""));
//                    selectSetProperty.AppendFormat(
//                                    "                obj.{0} = Convert.IsDBNull(reader[\"{1}\"]) ? null : ({2})reader[\"{1}\"];{3}",
//                                    ct.ColName.ToPascal(), ct.ColName.Trim(new char[] { '[', ']' }), ct.TypeName, (i < list.Count - 1 ? "\r\n" : ""));
//                }
//                insertFieldList = insertFieldList.Substring(0, insertFieldList.Length - 1);
//                insertValueList = insertValueList.Substring(0, insertValueList.Length - 1);
//                insertParamList = insertParamList.Substring(0, insertParamList.Length - 3);

//                sr = new StreamReader(sourcePath + "\\Service.cs", Encoding.UTF8);
//                str = sr.ReadToEnd();
//                sr.Close();
//                str = str.Replace("{namespace}", nameSpace)
//                         .Replace("{model pascal}", table.ToPascal())
//                         .Replace("{model camel}", table.ToCamel())
//                         .Replace("{table name}", table)
//                         .Replace("{field list}", insertFieldList)
//                         .Replace("{value list}", insertValueList)
//                         .Replace("{insert param list}", insertParamList)
//                         .Replace("{updateFields}", updateFields.ToString())
//                         .Replace("{condition list}", selectConditionList.ToString())
//                         .Replace("{set property}", selectSetProperty.ToString())
//                         ;
//                sw = new StreamWriter(path + "\\" + table.ToPascal() + "Service.cs", false, Encoding.UTF8);
//                sw.Write(str);
//                sw.Close();
//            }
//            sqlserverdalGuid = Guid.NewGuid().ToString().ToUpper();
//            sr = new StreamReader(sourcePath + "\\Project.csproj", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            StringBuilder includeFiles = new StringBuilder();
//            foreach (string table in tables)
//            {
//                includeFiles.Append("    <Compile Include=\"" + table.ToPascal() + "Service.cs\" />\r\n");
//            }
//            string refProj =
//                "    <ProjectReference Include=\"..\\Model\\Model.csproj\">\r\n" +
//                "      <Project>{" + modelGuid + "}</Project>\r\n" +
//                "      <Name>Model</Name>\r\n" +
//                "    </ProjectReference>\r\n" +
//                "    <ProjectReference Include=\"..\\DBUtility\\DBUtility.csproj\">\r\n" +
//                "      <Project>{" + dbutilityGuid + "}</Project>\r\n" +
//                "      <Name>DBUtility</Name>\r\n" +
//                "    </ProjectReference>\r\n";
//            str = str.Replace("{guid}", sqlserverdalGuid)
//                     .Replace("{namespace}", nameSpace)
//                     .Replace("{project name}", "DAL")
//                     .Replace("{reference assembly}", "")
//                     .Replace("{reference project}", refProj)
//                     .Replace("{include files}", includeFiles.ToString());
//            sw = new StreamWriter(path + "\\DAL.csproj", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成BLL项目
//        /// <summary>
//        /// 生成BLL项目
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateBLL(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\BLL";
//            //写入AssemblyInfo.cs文件
//            StreamReader sr = new StreamReader(sourcePath + "\\AssemblyInfo.cs", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            str = str.Replace("{project name}", "BLL")
//                     .Replace("{guid}", Guid.NewGuid().ToString().ToLower())
//                     .Replace("{year}", DateTime.Today.Year.ToString());
//            sr.Close();
//            StreamWriter sw = new StreamWriter(path + "\\Properties\\AssemblyInfo.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写manager类
//            string[] tables = GetTableNames();
//            foreach (string table in tables)
//            {
//                sr = new StreamReader(sourcePath + "\\Manager.cs", Encoding.UTF8);
//                str = sr.ReadToEnd();
//                sr.Close();
//                str = str.Replace("{namespace}", nameSpace)
//                         .Replace("{model pascal}", table.ToPascal())
//                         .Replace("{model camel}", table.ToCamel());
//                string identityField = GetIdentityField(table);
//                if (identityField == null)
//                {
//                    do
//                    {
//                        str = str.Remove(str.IndexOf("{start identity modify}"), str.IndexOf("{end}") - str.IndexOf("{start identity modify}") + 5);
//                    } while (str.IndexOf("{start identity modify}") > 0);
//                }
//                else
//                {
//                    str = str.Replace("{identity field}", identityField.ToPascal())
//                             .Replace("{start identity modify}", "")
//                             .Replace("{end}", "");
//                }
//                sw = new StreamWriter(path + "\\" + table.ToPascal() + "Manager.cs", false, Encoding.UTF8);
//                sw.Write(str);
//                sw.Close();
//            }
//            //写工程文件
//            bllGuid = Guid.NewGuid().ToString().ToUpper();
//            sr = new StreamReader(sourcePath + "\\Project.csproj", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            StringBuilder includeFiles = new StringBuilder();
//            foreach (string table in tables)
//            {
//                includeFiles.Append("    <Compile Include=\"" + table.ToPascal() + "Manager.cs\" />\r\n");
//            }
//            string refProj =
//                "    <ProjectReference Include=\"..\\Model\\Model.csproj\">\r\n" +
//                "      <Project>{" + modelGuid + "}</Project>\r\n" +
//                "      <Name>Model</Name>\r\n" +
//                "    </ProjectReference>\r\n" +
//                "    <ProjectReference Include=\"..\\DAL\\DAL.csproj\">\r\n" +
//                "      <Project>{" + sqlserverdalGuid + "}</Project>\r\n" +
//                "      <Name>DAL</Name>\r\n" +
//                "    </ProjectReference>\r\n";
//            str = str.Replace("{guid}", bllGuid)
//                     .Replace("{namespace}", nameSpace)
//                     .Replace("{project name}", "BLL")
//                     .Replace("{reference assembly}", "")
//                     .Replace("{reference project}", refProj)
//                     .Replace("{include files}", includeFiles.ToString());
//            sw = new StreamWriter(path + "\\BLL.csproj", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成web项目
//        /// <summary>
//        /// 生成web项目
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateWeb(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\WebUI";
//            uilGuid = Guid.NewGuid().ToString().ToUpper();
//            StreamReader sr = new StreamReader(sourcePath + "\\web.config", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            sr.Close();

//            string connString = string.Format("server={0};database={1};uid={2};pwd={3}", server, database, name, pwd);
//            str = str.Replace("{namespace}", nameSpace)
//                     .Replace("{connectionString}", connString);
//            StreamWriter sw = new StreamWriter(path + "\\Web.config", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成winform项目
//        /// <summary>
//        /// 生成winform项目
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        private static void CreateWin(string savePath, string nameSpace, string sourcePath)
//        {
//            string path = savePath + "\\" + nameSpace + "\\WinUI";
//            //写AssemblyInfo文件
//            StreamReader sr = new StreamReader(sourcePath + "\\AssemblyInfo.cs", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            str = str.Replace("{project name}", "WinUI")
//                     .Replace("{guid}", Guid.NewGuid().ToString().ToLower())
//                     .Replace("{year}", DateTime.Today.Year.ToString());
//            sr.Close();
//            StreamWriter sw = new StreamWriter(path + "\\Properties\\AssemblyInfo.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写Resources.Designer.cs文件
//            sr = new StreamReader(sourcePath + "\\Resources.Designer.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            str = str.Replace("{namespace}", nameSpace);
//            sr.Close();
//            sw = new StreamWriter(path + "\\Properties\\Resources.Designer.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //复制Resources.resx文件
//            File.Copy(sourcePath + "\\Resources.resx", path + "\\Properties\\Resources.resx", true);
//            //写Settings.Designer.cs文件
//            sr = new StreamReader(sourcePath + "\\Settings.Designer.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            str = str.Replace("{namespace}", nameSpace);
//            sr.Close();
//            sw = new StreamWriter(path + "\\Properties\\Settings.Designer.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //复制Settings.settings文件
//            File.Copy(sourcePath + "\\Settings.settings", path + "\\Properties\\Settings.settings", true);
//            //写Program.cs文件
//            sr = new StreamReader(sourcePath + "\\Program.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            str = str.Replace("{namespace}", nameSpace);
//            sr.Close();
//            sw = new StreamWriter(path + "\\Program.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写FrmMain.cs文件
//            sr = new StreamReader(sourcePath + "\\FrmMain.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            str = str.Replace("{namespace}", nameSpace);
//            sr.Close();
//            sw = new StreamWriter(path + "\\FrmMain.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写FrmMain.Designer.cs文件
//            sr = new StreamReader(sourcePath + "\\FrmMain.Designer.cs", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            str = str.Replace("{namespace}", nameSpace);
//            sr.Close();
//            sw = new StreamWriter(path + "\\FrmMain.Designer.cs", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//            //写config文件
//            uilGuid = Guid.NewGuid().ToString().ToUpper();
//            StreamReader AppSr = new StreamReader(sourcePath + "\\web.config", Encoding.UTF8);
//            string AppStr = AppSr.ReadToEnd();
//            AppSr.Close();

//            string connString = string.Format("server={0};database={1};uid={2};pwd={3}", server, database, name, pwd);
//            AppStr = AppStr.Replace("{namespace}", nameSpace)
//                     .Replace("{connectionString}", connString);
//            StreamWriter AppSw = new StreamWriter(path + "\\App.config", false, Encoding.UTF8);
//            AppSw.Write(AppStr);
//            AppSw.Close();

//            //写csproj项目文件
//            uilGuid = Guid.NewGuid().ToString().ToUpper();
//            string refProj =
//                "    <ProjectReference Include=\"..\\Model\\Model.csproj\">\r\n" +
//                "      <Project>{" + modelGuid + "}</Project>\r\n" +
//                "      <Name>Model</Name>\r\n" +
//                "    </ProjectReference>\r\n" +
//                "    <ProjectReference Include=\"..\\BLL\\BLL.csproj\">\r\n" +
//                "      <Project>{" + bllGuid + "}</Project>\r\n" +
//                "      <Name>BLL</Name>\r\n" +
//                "    </ProjectReference>\r\n";
//            sr = new StreamReader(sourcePath + "\\WinProject.csproj", Encoding.UTF8);
//            str = sr.ReadToEnd();
//            sr.Close();
//            str = str.Replace("{guid}", uilGuid)
//                     .Replace("{namespace}", nameSpace)
//                     .Replace("{reference project}", refProj);
//            sw = new StreamWriter(path + "\\WinUI.csproj", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #region 生成项目解决方案
//        /// <summary>
//        /// 生成项目解决方案
//        /// </summary>
//        ///<param name="savePath">存放路径</param>
//        /// <param name="nameSpace">命名空间</param>
//        /// <param name="sourcePath">模版路径</param>
//        /// <param name="projectType">项目类型</param>
//        private static void CreateSolution(string savePath, string nameSpace, string sourcePath, bool projectType)
//        {
//            string path = savePath + "\\" + nameSpace;
//            string solutionGuid = Guid.NewGuid().ToString().ToUpper();
//            string projectInfo = null;
//            //web项目
//            if (projectType)
//            {
//                projectInfo =
//                  "Project(\"{E24C65DC-7377-472B-9ABA-BC803B73C61A}\") = \"WebUI\", \"WebUI\\\", \"{" + uilGuid + "}\"\r\n" +
//                  "	ProjectSection(WebsiteProperties) = preProject\r\n" +
//                  "		TargetFrameworkMoniker = \".NETFramework,Version%3Dv4.0\"\r\n" +
//                  "		ProjectReferences = \"{" + modelGuid + "}|" + nameSpace + ".Model.dll;{" + bllGuid + "}|" + nameSpace + ".BLL.dll;{" + sqlserverdalGuid + "}|" + nameSpace + ".DAL.dll;{" + dbutilityGuid + "}|" + nameSpace + ".DBUtility.dll;\"\r\n" +
//                  "		Debug.AspNetCompiler.VirtualPath = \"/WebUI\"\r\n" +
//                  "		Debug.AspNetCompiler.PhysicalPath = \"WebUI\\\"\r\n" +
//                  "		Debug.AspNetCompiler.TargetPath = \"PrecompiledWeb\\WebUI\\\"\r\n" +
//                  "		Debug.AspNetCompiler.Updateable = \"true\"\r\n" +
//                  "		Debug.AspNetCompiler.ForceOverwrite = \"true\"\r\n" +
//                  "		Debug.AspNetCompiler.FixedNames = \"false\"\r\n" +
//                  "		Debug.AspNetCompiler.Debug = \"True\"\r\n" +
//                  "		Release.AspNetCompiler.VirtualPath = \"/WebUI\"\r\n" +
//                  "		Release.AspNetCompiler.PhysicalPath = \"WebUI\\\"\r\n" +
//                  "		Release.AspNetCompiler.TargetPath = \"PrecompiledWeb\\WebUI\"\r\n" +
//                  "		Release.AspNetCompiler.Updateable = \"true\"\r\n" +
//                  "		Release.AspNetCompiler.ForceOverwrite = \"true\"\r\n" +
//                  "		Release.AspNetCompiler.FixedNames = \"false\"\r\n" +
//                  "		Release.AspNetCompiler.Debug = \"False\"\r\n" +
//                  "		VWDPort = \"" + (new Random().Next(1030, 32700)) + "\"\r\n" +
//                  "		DefaultWebSiteLanguage = \"Visual C#\"\r\n" +
//                  "	EndProjectSection\r\n" +
//                  "EndProject";
//            }
//            else
//            {//winform项目
//                projectInfo =
//                    "Project(\"{{" + solutionGuid + "}}\") = \"WinUI\", \"WinUI\\WinUI.csproj\", \"{{" + uilGuid + "}}\"\r\n" +
//                    "EndProject";
//            }
//            //写sln文件
//            StreamReader sr = new StreamReader(sourcePath + "\\Solution.sln", Encoding.UTF8);
//            string str = sr.ReadToEnd();
//            sr.Close();
//            str = str.Replace("{{solutionGUID}}", solutionGuid)
//                     .Replace("{uiGUID}", uilGuid)
//                     .Replace("{ui project}", projectInfo)
//                     .Replace("{bllGUID}", bllGuid)
//                     .Replace("{sqlserverdalGUID}", sqlserverdalGuid)
//                     .Replace("{modelGUID}", modelGuid)
//                     .Replace("{dbutilityGUID}", dbutilityGuid);
//            StreamWriter sw = new StreamWriter(path + "\\" + nameSpace + ".sln", false, Encoding.UTF8);
//            sw.Write(str);
//            sw.Close();
//        }
//        #endregion
//        #endregion





//        #region 全局变量
//        static string DalNameSpace = "CMS.DAL";//DAL层命名空间（下同）
//        static string ModelNameSpace = "CMS.Model";
//        static string BllNameSpace = "CMS.BLL";
//        static string DalLayerPath = @"d:\Test\DAL\";//dal层代码生成代码文件存放路径（下同）
//        static string ModelLayerPath = @"d:\Test\Model\";
//        static string BllLayerPath = @"d:\Test\BLL\";
//        static char DicSplit = '≡';//分隔符，注意：代码不是因此出错，建议不要修改 
//        #endregion

//        #region 得到数据库中所有表及字段

//        private static Dictionary<string, Dictionary<string, string>> GetDBInfo()
//        {
//            //Dictionary<{表,说明},Dictionary<{字段,说明},数据类型>>
//            Dictionary<string, Dictionary<string, string>> dicR = new Dictionary<string, Dictionary<string, string>>();
//            string getTables = " SELECT name FROM sysobjects  WHERE xtype = 'U' ";

//            DataTable dt = SQLHelper.ExcuteTable(getTables, CommandType.Text);
//            foreach (DataRow item in dt.Rows)
//            {
//                string tblName = item[0].ToString();
//                //"SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='" + tblName+"' ";
//                string getTblFields = @"SELECT 
//                    表名       = case when a.colorder=1 then d.name else '' end,
//                    表说明     = case when a.colorder=1 then isnull(f.value,'') else '' end,
//                    字段序号   = a.colorder,
//                    字段名     = a.name,
//                    标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
//                    主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
//                                     SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
//                    类型       = b.name,
//                    占用字节数 = a.length,
//                    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
//                    小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
//                    允许空     = case when a.isnullable=1 then '√'else '' end,
//                    默认值     = isnull(e.text,''),
//                    字段说明   = isnull(g.[value],'')
//                FROM 
//                    syscolumns a
//                left join 
//                    systypes b 
//                on 
//                    a.xusertype=b.xusertype
//                inner join 
//                    sysobjects d 
//                on 
//                    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
//                left join 
//                    syscomments e 
//                on 
//                    a.cdefault=e.id
//                left join 
//                sys.extended_properties   g 
//                on 
//                    a.id=G.major_id and a.colid=g.minor_id  
//                left join
//                sys.extended_properties f
//                on 
//                    d.id=f.major_id and f.minor_id=0
//                where   d.name='" + tblName + "'   order by  a.id,a.colorder";
//                DataTable dtTbl = SQLHelper.ExcuteTable(getTables, CommandType.Text);
//                Dictionary<string, string> dicItem = new Dictionary<string, string>();
//                foreach (DataRow tbl in dtTbl.Rows)
//                {
//                    if (tbl[1].ToString() != "")
//                        tblName += DicSplit + tbl[1].ToString();
//                    string COLUMN_NAME = tbl[3].ToString() + DicSplit + tbl[12].ToString();
//                    string DATA_TYPE = tbl[6].ToString();
//                    dicItem.Add(COLUMN_NAME, DATA_TYPE);
//                }
//                dicR.Add(tblName, dicItem);
//            }
//            return dicR;
//        }
//        #endregion

//        #region 遍历生成Model层代码
//        private static void ModelFactory(Dictionary<string, Dictionary<string, string>> dic)
//        {
//            foreach (var item in dic)
//            {
//                #region 类模板
//                StringBuilder sb = new StringBuilder();
//                sb.Append("  using System;\r\n");
//                sb.Append("  using System.Text;\r\n");
//                sb.Append("                                                       \r\n");
//                sb.Append("  /**************************************************  \r\n");
//                sb.Append("   * 类 名 称 :  【类名称】\r\n");
//                sb.Append("   * 版 本 号 :  v1.0.0.0\r\n");
//                sb.Append("   * 说    明 :  【表职责】\r\n");
//                sb.Append("   * 作    者 :\r\n");
//                sb.Append("   * 创建时间 : 【时间戳】\r\n");
//                sb.Append("  **************************************************/  \r\n");
//                sb.Append("  namespace 【命名空间】                                  \r\n");
//                sb.Append("  {                                                    \r\n");
//                sb.Append("      public class 【表】                               \r\n ");
//                sb.Append("      {                                                \r\n");
//                sb.Append("                                                       \r\n");
//                sb.Append("          public 【表】()                               \r\n");
//                sb.Append("          {                                            \r\n ");
//                sb.Append("          }                                            \r\n ");
//                sb.Append("         【属性部分】                                    \r\n ");
//                sb.Append("  	}                                                  \r\n ");
//                sb.Append("  }                                                   \r\n ");

//                #endregion

//                #region 属性部分
//                StringBuilder propPart = new StringBuilder();
//                foreach (var field in item.Value)
//                {
//                    string[] key = field.Key.Split(DicSplit);
//                    string type = ChangeToCSharpType(field.Value.ToString());//Dictionary<{表,说明},Dictionary<{字段,说明},数据类型>>
//                    string fName = key[0];
//                    string fRemark = key.Length == 2 ? key[1] : "";
//                    string first = field.Key.Substring(0, 1);//第一个字母
//                    fName = fName.Substring(1, fName.Length - 1);//不含第一个字母
//                    string _f = first.ToLower() + fName;
//                    string pF = first.ToUpper() + fName;
//                    propPart.Append("                                                  \r\n");
//                    propPart.AppendFormat("    private {0} {1};                          \r\n", type, _f);
//                    propPart.AppendFormat("    //{0}                                       \r\n", fRemark);
//                    propPart.AppendFormat("    public {0} {1}                              \r\n", type, pF);
//                    propPart.Append("          {                                            \r\n");
//                    propPart.Append("              get { return " + _f + "; }                     \r\n");
//                    propPart.Append("              set { " + _f + " = value; }                    \r\n");
//                    propPart.Append("          }                                            \r\n");
//                }
//                #endregion

//                string[] tableInfo = item.Key.Split(DicSplit);
//                string tblName = tableInfo[0];
//                string tblWork = tableInfo.Length == 2 ? tableInfo[1] : "";
//                string r = sb.ToString()
//                        .Replace("【类名称】", tblName + "表实体类")
//                        .Replace("【时间戳】", DateTime.Now.ToString())
//                        .Replace("【命名空间】", ModelNameSpace)
//                        .Replace("【表】", tblName)
//                        .Replace("【表职责】", tblWork)
//                        .Replace("【属性部分】", propPart.ToString());
//                CreateTxt(ModelLayerPath + tblName + "Model.cs", ModelLayerPath, r);
//            }

//        }
//        #endregion

//        #region 遍历生成DAL层代码
//        private static void DALFactory(Dictionary<string, Dictionary<string, string>> dic)
//        {

//            foreach (var item in dic)
//            {
//                StringBuilder sb = new StringBuilder();
//                #region 类模板
//                sb.Append("using System.Collections.Generic;                                             \r\n");
//                sb.Append("using System.Text;                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("/**************************************************                           \r\n  ");
//                sb.Append(" * 类 名 称 :  【类名称】                                                      \r\n  ");
//                sb.Append(" * 版 本 号 :  v1.0.0.0                                                       \r\n  ");
//                sb.Append(" * 说    明 :  用于【表】数据持久化                                            \r\n ");
//                sb.Append(" * 作    者 :                                                                 \r\n  ");
//                sb.Append(" * 创建时间 :  【时间戳】                                                      \r\n");
//                sb.Append("****************************************************/                         \r\n  ");
//                sb.Append("namespace 【命名空间】                                                            \r\n  ");
//                sb.Append("{                                                                             \r\n  ");
//                sb.Append("    public class 【表】DAL                                                    \r\n  ");
//                sb.Append("    {                                                                         \r\n  ");
//                sb.Append("        #region select                                                        \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        public List<【表】> Select(【表】 model)                               \r\n ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            string sql = \"SELECT * FROM 【表】 where \";                     \r\n   ");
//                sb.Append("            return DapperHelper.Select<【表】>(sql, model);                   \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region delete                                                        \r\n  ");
//                sb.Append("        public bool Delete(【表】 model)                                      \r\n  ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            string sql = \"DELETE FROM 【表】 WHERE Id=@Id\";                 \r\n");
//                sb.Append("            return DapperHelper.NoQuery<【表】>(sql, model) > 0;              \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region insert                                                        \r\n  ");
//                sb.Append("        public bool Add(【表】 model)                                         \r\n  ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("			   【当前表Insert】                                                  \r\n  ");
//                sb.Append("            return DapperHelper.NoQuery<【表】>(sql.ToString(), model) > 0;   \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region update                                                        \r\n  ");
//                sb.Append("        public bool Update(【表】 model)                                      \r\n ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            【当前表Update】               \r\n  ");
//                sb.Append("            return DapperHelper.NoQuery<【表】>(sql, model) > 0;              \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("    }                                                                         \r\n  ");
//                sb.Append("}                                                                             \r\n  ");
//                #endregion
//                string tblName = item.Key.Split(DicSplit)[0];
//                string insetSQL = GetInsertSQL(tblName, item.Value);
//                string updateSQL = GetUpdateSQL(tblName, item.Value);
//                string r = sb.ToString()
//                            .Replace("【类名称】", tblName + "表DAL类")
//                            .Replace("【时间戳】", DateTime.Now.ToString())
//                            .Replace("【命名空间】", DalNameSpace)
//                            .Replace("【表】", tblName)
//                            .Replace("【当前表Insert】", insetSQL)
//                            .Replace("【当前表Update】", updateSQL);
//                CreateTxt(DalLayerPath + tblName + "DAL.cs", DalLayerPath, r);
//            }

//        }
//        #endregion

//        #region 遍历生成BLL层代码
//        private static void BLLFactory(Dictionary<string, Dictionary<string, string>> dic)
//        {

//            foreach (var item in dic)
//            {
//                StringBuilder sb = new StringBuilder();
//                #region 类模板
//                sb.Append("using System;                                                                 \r\n");
//                sb.Append("using System.Collections.Generic;                                             \r\n");
//                sb.Append("using System.Linq;                                                            \r\n");
//                sb.Append("using System.Text;                                                            \r\n");
//                sb.Append("using System.Threading.Tasks;                                                 \r\n");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("/**************************************************                           \r\n  ");
//                sb.Append(" * 类 名 称 :  【类名称】                                                      \r\n  ");
//                sb.Append(" * 版 本 号 :  v1.0.0.0                                                       \r\n  ");
//                sb.Append(" * 说    明 :  用于【表】表业务操作                                            \r\n ");
//                sb.Append(" * 作    者 :                                                                 \r\n  ");
//                sb.Append(" * 创建时间 :  【时间戳】                                                      \r\n");
//                sb.Append("****************************************************/                         \r\n  ");
//                sb.Append("namespace 【命名空间】                                                            \r\n  ");
//                sb.Append("{                                                                             \r\n  ");
//                sb.Append("    public class 【表】BLL                                                    \r\n  ");
//                sb.Append("    {                                                                         \r\n  ");
//                sb.Append("        #region select                                                        \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        public List<【表】> Select(【表】 model, string sqlWhere)             \r\n ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            return 【表】DAL.Select(model, sqlWhere);                  \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region delete                                                        \r\n  ");
//                sb.Append("        public bool Delete(【表】 model)                                      \r\n  ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            return 【表】DAL.Delete(model);                                   \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region insert                                                        \r\n  ");
//                sb.Append("        public bool Add(【表】 model)                                         \r\n  ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            return 【表】DAL.Add(model);                                     \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("                                                                              \r\n  ");
//                sb.Append("        #region update                                                        \r\n  ");
//                sb.Append("        public bool Update(【表】 model)                                      \r\n ");
//                sb.Append("        {                                                                     \r\n  ");
//                sb.Append("            return 【表】DAL.Update(model);                                    \r\n  ");
//                sb.Append("        }                                                                     \r\n  ");
//                sb.Append("        #endregion                                                            \r\n  ");
//                sb.Append("    }                                                                         \r\n  ");
//                sb.Append("}                                                                             \r\n  ");
//                #endregion
//                string tblName = item.Key.Split(DicSplit)[0];
//                string r = sb.ToString()
//                            .Replace("【类名称】", tblName + "表BLL类")
//                            .Replace("【时间戳】", DateTime.Now.ToString())
//                            .Replace("【命名空间】", BllNameSpace)
//                            .Replace("【表】", tblName);
//                CreateTxt(BllLayerPath + tblName + "BLL.cs", BllLayerPath, r);
//            }

//        }
//        #endregion

//        #region 其他

//        //为某个表生成insert语句
//        public static string GetInsertSQL(string tableName, Dictionary<string, string> filedDic)
//        {
//            StringBuilder sb = new StringBuilder();

//            sb.AppendFormat("StringBuilder sql = new StringBuilder();           \r\n");
//            sb.AppendFormat(" #region sql                                       \r\n");
//            sb.AppendFormat(" sql.Append(\"INSERT INTO {0}  \");                \r\n", tableName);
//            sb.AppendFormat(" sql.Append(\" ( \"); \r\n");
//            int i = 0;
//            foreach (var item in filedDic)
//            {
//                string[] key = item.Key.Split(DicSplit);
//                string filedName = key[0];
//                string splitChar = ",";
//                if (i + 1 == filedDic.Count)
//                    splitChar = "";
//                sb.AppendFormat(" sql.Append(\"   {0} {1} \");                  \r\n", filedName, splitChar);
//                i++;
//            }
//            sb.AppendFormat(" sql.Append(\" ) \");                              \r\n");
//            sb.AppendFormat(" sql.Append(\" VALUES  ( \");                      \r\n");
//            int b = 0;
//            foreach (var item in filedDic)
//            {
//                string[] key = item.Key.Split(DicSplit);
//                string filedName = key[0];
//                string splitChar = ",";
//                if (b + 1 == filedDic.Count)
//                    splitChar = "";
//                sb.AppendFormat(" sql.Append(\"     @{0} {1} \");               \r\n", filedName, splitChar);
//                b++;
//            }
//            sb.AppendFormat(" sql.Append(\" ) \");                             \r\n");
//            sb.AppendFormat(" #endregion sql                                   \r\n");
//            return sb.ToString();
//        }

//        //为某个表生成update语句
//        public static string GetUpdateSQL(string tableName, Dictionary<string, string> filedDic)
//        {
//            StringBuilder sb = new StringBuilder();
//            sb.AppendFormat("StringBuilder sql = new StringBuilder();           \r\n");
//            sb.AppendFormat(" #region sql                                       \r\n");
//            sb.AppendFormat(" sql.Append(\" Update {0} set   \");               \r\n", tableName);
//            int i = 0;
//            foreach (var item in filedDic)
//            {
//                string[] key = item.Key.Split(DicSplit);
//                string filedName = key[0];
//                string splitChar = ",";
//                if (i + 1 == filedDic.Count)
//                    splitChar = "";
//                sb.AppendFormat(" sql.Append(\"   {0}=@{0} {1} \"); \r\n", filedName, splitChar);
//                i++;
//            }
//            sb.AppendFormat(" sql.Append(\" Where Id=@Id   \"); \r\n");
//            sb.AppendFormat(" #endregion sql                                       \r\n");
//            return sb.ToString();
//        }

//        //生成cs文件
//        public static void CreateTxt(string filePath, string folderPath, string fileContent)
//        {
//            if (!Directory.Exists(folderPath))//如果不存在就创建文件夹
//                Directory.CreateDirectory(folderPath);
//            FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.None);
//            StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
//            sw.Write(fileContent);
//            sw.Close();
//            fs.Close();
//        }

//        // 数据库中与C#中的数据类型对照
//        private static string ChangeToCSharpType(string type)
//        {
//            string reval = string.Empty;
//            switch (type.ToLower())
//            {
//                case "int":
//                    reval = "int";
//                    break;
//                case "text":
//                    reval = "string";
//                    break;
//                case "bigint":
//                    reval = "int";
//                    break;
//                case "binary":
//                    reval = "byte[]";
//                    break;
//                case "bit":
//                    reval = "bool";
//                    break;
//                case "char":
//                    reval = "string";
//                    break;
//                case "datetime":
//                    reval = "DateTime";
//                    break;
//                case "decimal":
//                    reval = "decimal";
//                    break;
//                case "float":
//                    reval = "double";
//                    break;
//                case "image":
//                    reval = "byte[]";
//                    break;
//                case "money":
//                    reval = "decimal";
//                    break;
//                case "nchar":
//                    reval = "string";
//                    break;
//                case "ntext":
//                    reval = "string";
//                    break;
//                case "numeric":
//                    reval = "decimal";
//                    break;
//                case "nvarchar":
//                    reval = "string";
//                    break;
//                case "real":
//                    reval = "single";
//                    break;
//                case "smalldatetime":
//                    reval = "DateTime";
//                    break;
//                case "smallint":
//                    reval = "int";
//                    break;
//                case "smallmoney":
//                    reval = "decimal";
//                    break;
//                case "timestamp":
//                    reval = "DateTime";
//                    break;
//                case "tinyint":
//                    reval = "byte";
//                    break;
//                case "uniqueidentifier":
//                    reval = "System.Guid";
//                    break;
//                case "varbinary":
//                    reval = "byte[]";
//                    break;
//                case "varchar":
//                    reval = "string";
//                    break;
//                case "Variant":
//                    reval = "Object";
//                    break;
//                default:
//                    reval = "string";
//                    break;
//            }
//            return reval;
//        }
//        #endregion

//        #region 最新代码2021-09-09
//        /*
//         * 1、制作生成model层的代码
//         */

//        /// <summary>
//        /// 根据模版制作model层代码
//        /// </summary>
//        /// <param name="TableNames"></param>
//        /// <param name="NameSpace"></param>
//        /// <param name="ConnectionString"></param>
//        /// <param name="SavePath"></param>
//        public static void CreateModel(List<string> TableNames, string NameSpace, string ConnectionString, string SavePath)
//        {
//            List<ModelClass> Models = new List<ModelClass>();//Dictionary<Model名称,Model内容>
//            //获取到模版
//            string Model_templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\ModelTemplate.txt";
//            if (!File.Exists(Model_templatePath))
//            {
//                //提示错误信息
//            }

//            string DataAccess_templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\DataAccessTemplate.txt";
//            if (!File.Exists(DataAccess_templatePath))
//            {
//                //提示错误信息
//            }

//            #region 生成Model层
//            foreach (string TableName in TableNames)
//            {
//                //获取到表内字段信息
//                List<ColumnContent> list = GetColumns(TableName, ConnectionString);


//                StringBuilder Model_sb = new StringBuilder();

//                using (System.IO.StreamReader sr = System.IO.File.OpenText(Model_templatePath))
//                {
//                    for (int i = 0; i < list.Count; i++)
//                    {
//                        ColumnContent ct = list[i];

//                        Model_sb.Append("        /// <summary>\r\n");
//                        Model_sb.Append("        /// " + ct.Comment.Replace("\r", "").Replace("\n", "").Trim() + "\r\n");
//                        Model_sb.Append("        /// </summary>\r\n");
//                        Model_sb.Append("        public " + ct.TypeName + " " + ct.ColName.ToPascal() + " { get; set; }" + (i < list.Count - 1 ? "\r\n\r\n" : ""));
//                    }

//                    string model = sr.ReadToEnd();
//                    model = model.Replace("${NameSpace}", NameSpace)
//                                 .Replace("${currentDateTime}", DateTime.Now.ToString())
//                                 .Replace("${ClassName}", TableName)
//                                 .Replace("${Props}", Model_sb.ToString());

//                    Models.Add(new ModelClass() { ClassName = TableName, ClassNeiRong = model });
//                }

//            }

//            foreach (ModelClass model in Models)
//            {
//                if (!Directory.Exists($"{SavePath}\\{NameSpace}.Model"))
//                {
//                    Directory.CreateDirectory($"{SavePath}\\{NameSpace}.Model");
//                }

//                StreamWriter sw = new StreamWriter($"{SavePath}\\{NameSpace}.Model\\{model.ClassName}Model.cs", false, Encoding.UTF8);
//                sw.Write(model.ClassNeiRong);
//                sw.Close();
//            }

//            CreateProject(false, ProjectType.Model, NameSpace, SavePath);
//            #endregion

//            #region 生成DataAccess层


//            StringBuilder DataAccess_sb = new StringBuilder();

//            using (StreamReader sr = new StreamReader(DataAccess_templatePath))
//            {
//                foreach (ModelClass model in Models)
//                {
//                    DataAccess_sb.Append("        /// <summary>\r\n");
//                    DataAccess_sb.Append("        /// \r\n");
//                    DataAccess_sb.Append("        /// </summary>\r\n");
//                    DataAccess_sb.AppendLine($"        public DbSet<{model.ClassName}Model> {model.ClassName}s " + " { get; set; }");
//                    DataAccess_sb.AppendLine("");
//                }

//                string dataaccess = sr.ReadToEnd();
//                dataaccess = dataaccess.Replace("${NameSpace}", NameSpace)
//                                       .Replace("${CurrentDateTime}", DateTime.Now.ToString())
//                                       .Replace("${DbSet}", DataAccess_sb.ToString());
//                if (!Directory.Exists($"{SavePath}\\{NameSpace}.DataAccess"))
//                {
//                    Directory.CreateDirectory($"{SavePath}\\{NameSpace}.DataAccess");
//                }

//                using (StreamWriter sw = new StreamWriter($"{SavePath}\\{NameSpace}.DataAccess\\{NameSpace}.DataAccess.cs", false, Encoding.UTF8))
//                {
//                    sw.Write(dataaccess);
//                }
//            }

//            CreateProject(false, ProjectType.DataAccess, NameSpace, SavePath);
//            #endregion

//            #region 生成ViewModel层
//            CreateProject(false, ProjectType.ViewModel, NameSpace, SavePath);
//            #endregion

//            #region 生成View层
//            CreateView(NameSpace, SavePath);
//            CreateProject(true, ProjectType.View, NameSpace, SavePath);
//            #endregion

//            #region 生成Solution
//            CreateSolution(NameSpace, SavePath);
//            #endregion

//        }


//        public static string CreateDAL2(string nameSpace, string tableName, string ConnectionString, CommandType commandType, string sql)
//        {
//            string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\DALTemplate.txt";

//            string DALString = string.Empty;
//            if (!File.Exists(templatePath))
//            {
//                return DALString;
//            }
//            using (System.IO.StreamReader sr = System.IO.File.OpenText(templatePath))
//            {
//                StringBuilder insert = new StringBuilder();
//                StringBuilder update = new StringBuilder();

//                using (SqlDataReader reader = SQLHelper.ExecuteReader(ConnectionString, commandType, sql, null))
//                {
//                    insert.Append($"\tstring sql =\"Insert into  {tableName} ( " + reader.GetName(1));
//                    for (int i = 2; i < reader.FieldCount; i++)
//                    {
//                        insert.Append("," + reader.GetName(i));
//                    }
//                    insert.Append(") values ( @" + reader.GetName(1) + "");
//                    for (int i = 2; i < reader.FieldCount; i++)
//                    {
//                        insert.Append(",@" + reader.GetName(i));
//                    }
//                    insert.AppendLine(");");
//                    insert.AppendLine("\tSqlParameter[] pare = new SqlParameter[] ");
//                    insert.AppendLine("\t{");
//                    for (int i = 1; i < reader.FieldCount; i++)
//                    {
//                        insert.AppendLine($"\t    new SqlParameter(\"@{ reader.GetName(i) }\",entity.{ reader.GetName(i)}),");
//                    }
//                    insert.AppendLine("\t};");


//                    update.Append($"\tstring sql =\"update {tableName} set " + reader.GetName(1) + "=@" + reader.GetName(1));
//                    for (int i = 2; i < reader.FieldCount; i++)
//                    {
//                        update.Append("," + reader.GetName(i) + "=@" + reader.GetName(i));
//                    }
//                    update.AppendLine(" where Id=@Id;");
//                    update.AppendLine("\tSqlParameter[] pare = new SqlParameter[] ");
//                    update.AppendLine("\t{");
//                    for (int i = 0; i < reader.FieldCount; i++)
//                    {
//                        update.AppendLine($"\t    new SqlParameter(\"@{ reader.GetName(i)}\",entity.{reader.GetName(i)}),");
//                    }
//                    update.AppendLine("\t};");
//                }
//                DALString = sr.ReadToEnd();

//                DALString = DALString.Replace("${currentDateTime}", DateTime.Now.ToString())
//                                     .Replace("${NameSpace}", nameSpace)
//                                     .Replace("${ClassName}", tableName)
//                                     .Replace("${InsertSql}", insert.ToString())
//                                     .Replace("${UpdateSql}", update.ToString());

//                return DALString;
//            }
//        }

//        public static string CreateSQLHelper(string NameSpace, string ConnectionString)
//        {
//            string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\SQLHelperTemplate.txt";

//            string SQLHelperString = string.Empty;
//            if (!File.Exists(templatePath))
//            {
//                return SQLHelperString;
//            }
//            using (System.IO.StreamReader sr = System.IO.File.OpenText(templatePath))
//            {
//                SQLHelperString = sr.ReadToEnd();
//            }


//            SQLHelperString = SQLHelperString.Replace("${currentDateTime}", DateTime.Now.ToString())
//                                         .Replace("${NameSpace}", NameSpace)
//                                         .Replace("${ConnectionString}", ConnectionString);

//            return SQLHelperString;
//        }

//        public static string CreateDAL(string nameSpace, string tableName, string ConnectionString, CommandType commandType, string sql)
//        {
//            StringBuilder sb = new StringBuilder();
//            using (SqlDataReader reader = SQLHelper.ExecuteReader(ConnectionString, commandType, sql, null))
//            {
//                #region 查询列表
//                sb.AppendLine("using System;");
//                sb.AppendLine("using System.Collections.Generic;");
//                sb.AppendLine("using System.Linq;");
//                sb.AppendLine("using System.Text;");
//                sb.AppendLine($"using {nameSpace}.Model;");
//                sb.AppendLine("using System.Data.SqlClient;");
//                sb.AppendLine("using System.Data");
//                sb.AppendLine("");
//                sb.AppendLine($"namespace {nameSpace}.DAL");
//                sb.AppendLine("{");
//                sb.AppendLine($"\tpublic class {tableName}DAL");
//                sb.AppendLine("\t{");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///得到 {tableName}Model 数据进行分页");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine("\t\t///<param name=\"pageSize\"></param>");
//                sb.AppendLine("\t\t///<param name=\"pageIndex\"></param>");
//                sb.AppendLine($"\t\tpublic static IList<{tableName}Model> GetAll{tableName}s (int pageSize, int pageIndex)");
//                sb.AppendLine("\t\t{");
//                sb.AppendLine("\t\t\tpageIndex--");
//                sb.AppendLine($"\t\t\tIList<{tableName}Model> list =new List<{tableName}Model> ();");
//                sb.AppendLine($"\t\t\tstring sql=\"select top (@pageSize) * from {tableName} where Id not in(select top (@pageSize*@pageIndex) Id from {tableName}  order by id desc) order by id desc;\"");
//                sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
//                sb.AppendLine("\t\t\t{");
//                sb.AppendLine("\t\t\t\tnew SqlParameter(\"@pageSize\",pageSize),");
//                sb.AppendLine("\t\t\t\tnew SqlParameter(\"@pageIndex\",pageIndex)");
//                sb.AppendLine("\t\t\t};");
//                sb.AppendLine("\t\t\tusing (SqlDataReader reader = DBHelper.ExecuteReader(DBHelper.CONNSTRING, CommandType.Text, sql,pare)");
//                sb.AppendLine("\t\t\t{");
//                sb.AppendLine("\t\t\t\twhile (reader.Read())");
//                sb.AppendLine("\t\t\t\t{");
//                sb.AppendLine($"\t\t\t\t\t{tableName}Model  {tableName.ToLower()} = new {tableName}Model();");
//                for (int i = 0; i < reader.FieldCount; i++)
//                {
//                    if (reader.GetFieldType(i).ToString() == "System.Int32")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToInt32(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.String")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = reader[\"{reader.GetName(i)}\"].ToString();");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.DateTime")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToDateTime(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Boolean")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToBoolean(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Byte[]")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToByte(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Double")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} =  Convert.ToDouble(reader[\"{reader.GetName(i)}\"]);");

//                    }

//                }
//                sb.AppendLine($"\t\t\t\t\tlist.Add({tableName.ToLower()});");
//                sb.AppendLine("\t\t\t\t}");
//                sb.AppendLine("\t\t\t\treturn list;");
//                sb.AppendLine("\t\t\t}");
//                sb.AppendLine("\t\t}\n\n");
//                sb.AppendLine("");
//                #endregion

//                #region 获取单条数据
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///得到 {tableName}Model 对象信息通过Id");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine("\t\t///<param name=\"Id\"></param>");
//                sb.AppendLine($"\t\tpublic static {tableName}Model GetById(int Id)");
//                sb.AppendLine("\t\t{");
//                sb.AppendLine($"\t\t\t sting sql=\"select * from {tableName} where Id=@Id;\"");
//                sb.AppendLine($"\t\t\t {tableName}Model {tableName.ToLower()}= null;");
//                sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
//                sb.AppendLine("\t\t\t{");
//                sb.AppendLine("\t\t\t\tnew SqlParameter(\"@Id\",Id)");
//                sb.AppendLine("\t\t\t};");
//                sb.AppendLine("\t\t\tusing (SqlDataReader reader = DBHelper.ExecuteReader(DBHelper.CONNSTRING, CommandType.Text, sql,pare)");
//                sb.AppendLine("\t\t\t{");
//                sb.AppendLine("\t\t\t\tif (reader.Read())");
//                sb.AppendLine("\t\t\t\t{");
//                sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()} = new {tableName}Model();");
//                for (int i = 0; i < reader.FieldCount; i++)
//                {
//                    if (reader.GetFieldType(i).ToString() == "System.Int32")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToInt32(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.String")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = reader[\"{reader.GetName(i)}\"].ToString();");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.DateTime")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToDateTime(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Boolean")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToBoolean(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Byte[]")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} = Convert.ToByte(reader[\"{reader.GetName(i)}\"]);");

//                    }
//                    else if (reader.GetFieldType(i).ToString() == "System.Double")
//                    {
//                        sb.AppendLine($"\t\t\t\t\t{tableName.ToLower()}.{reader.GetName(i)} =  Convert.ToDouble(reader[\"{reader.GetName(i)}\"]);");

//                    }

//                }
//                sb.AppendLine("\t\t\t\t}");
//                sb.AppendLine($"\t\t\t\treturn  {tableName.ToLower()};");
//                sb.AppendLine("\t\t\t}");
//                sb.AppendLine("\t\t}");
//                sb.AppendLine("");
//                #endregion
//                //更改
//                #region Update
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///更改{tableName.ToLower()}信息通过Id");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///<param name=\"{tableName.ToLower()}\"></param>");
//                sb.AppendLine($"\t\tpublic static int Update{tableName.ToLower()}ModelById({tableName}Model {tableName.ToLower()})");
//                sb.AppendLine("\t\t{");
//                sb.Append($"\t\t\tstring sql =\"update {tableName} set " + reader.GetName(1) + "=@" + reader.GetName(1));
//                for (int i = 2; i < reader.FieldCount; i++)
//                {
//                    sb.Append("," + reader.GetName(i) + "=@" + reader.GetName(i));
//                }
//                sb.AppendLine(" where Id=@Id;");
//                sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
//                sb.AppendLine("\t\t\t{");
//                for (int i = 0; i < reader.FieldCount; i++)
//                {
//                    sb.AppendLine($"\t\t\t\tnew SqlParameter(\"@{ reader.GetName(i)}\",{tableName.ToLower()}.{reader.GetName(i)}),");
//                }
//                sb.AppendLine("\t\t\t};");
//                sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");

//                sb.AppendLine("\t\t}");
//                sb.AppendLine("");
//                #endregion
//                //添加
//                #region Add
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///添加{tableName}Model");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///<param name=\"{tableName}\"></param>");
//                sb.AppendLine($"\t\tpublic static int Insert{tableName}Model({tableName} {tableName.ToLower()})");
//                sb.AppendLine("\t\t{");
//                sb.Append($"\t\t\tstring sql =\"Insert into  {tableName} ( " + reader.GetName(1));
//                for (int i = 2; i < reader.FieldCount; i++)
//                {
//                    sb.Append("," + reader.GetName(i));
//                }
//                sb.Append(") values ( @" + reader.GetName(1) + "");
//                for (int i = 2; i < reader.FieldCount; i++)
//                {
//                    sb.Append(",@" + reader.GetName(i));
//                }
//                sb.AppendLine(");");
//                sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
//                sb.AppendLine("\t\t\t{");
//                for (int i = 1; i < reader.FieldCount; i++)
//                {
//                    sb.AppendLine($"\t\t\t\tnew SqlParameter(\"@{ reader.GetName(i) }\",{tableName.ToLower()}.{ reader.GetName(i)}),");
//                }
//                sb.AppendLine("\t\t\t};");
//                sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");

//                sb.AppendLine("\t\t}");
//                sb.AppendLine("");
//                #endregion

//                #region 删除
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///删除{tableName}Model信息通过Id");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine("\t\t///<param name=Id></param>");
//                sb.AppendLine($"\t\tpublic static int Delete{tableName}ById(int Id)");
//                sb.AppendLine("\t\t{");
//                sb.AppendLine($"\t\t\t string sql =delete {tableName} where Id=@Id;");
//                sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
//                sb.AppendLine("\t\t\t{");
//                sb.AppendLine("\t\t\t\tnew SqlParameter(\"@Id\",Id)");
//                sb.AppendLine("\t\t\t};");
//                sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
//                sb.AppendLine("\t\t}");
//                sb.AppendLine("");
//                #endregion
//                //批量删除对象
//                #region 批量删除
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine($"\t\t///删除{tableName}Model信息通过Id");
//                sb.AppendLine("\t\t///<summary>");
//                sb.AppendLine("\t\t///<param name=Id></param>");
//                sb.AppendLine($"\t\tpublic static int Delete{tableName}ById(string Id)");
//                sb.AppendLine("\t\t{");
//                sb.AppendLine($"\t\t\t string sql =delete {tableName} where Id in (\"+Id+\");");
//                sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
//                sb.AppendLine("\t\t}");
//                #endregion


//                sb.AppendLine("\t}");
//                sb.AppendLine("}");
//                return sb.ToString();
//            }

//        }

//        public static void CreateBLL()
//        {


//        }

//        private static void CreateProject(bool OutputType, ProjectType projectType, string NameSpace, string SavePath)
//        {
//            string ProjectString = string.Empty;
//            string FolderName = string.Empty;
//            string ProjectName = string.Empty;

//            StringBuilder sb = new StringBuilder();
//            StringBuilder ProjectReferenceArea_sb = new StringBuilder();
//            StringBuilder PackageReferenceArea_sb = new StringBuilder();

//            //先获取到Project模版
//            using (StreamReader sr = new StreamReader($"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\ProjectTemplate.txt"))
//            {
//                //看传入的是窗体还是类库，true是窗体，false是类库
//                string outputType = OutputType == true ? "WinExe" : "library";

//                switch (projectType)
//                {
//                    case ProjectType.Model:
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Vampirewal.Core\" Version=\"1.0.0.1\" />");

//                        FolderName = $"{NameSpace}.Model";
//                        ProjectName = $"{NameSpace}.Model.csproj";
//                        break;
//                    case ProjectType.DataAccess:
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Microsoft.Data.Sqlite.Core\" Version=\"5.0.6\" />");
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Microsoft.EntityFrameworkCore\" Version=\"5.0.6\" />");
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Microsoft.EntityFrameworkCore.Sqlite\" Version=\"5.0.6\" />");
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Vampirewal.Core\" Version=\"1.0.0.1\" />");

//                        ProjectReferenceArea_sb.AppendLine("    <ProjectReference Include=\"" + $"..\\{NameSpace}.Model\\{NameSpace}.Model.csproj" + "\" />");
//                        //还有数据访问层
//                        FolderName = $"{NameSpace}.DataAccess";
//                        ProjectName = $"{NameSpace}.DataAccess.csproj";
//                        break;
//                    case ProjectType.ViewModel:
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Vampirewal.Core\" Version=\"1.0.0.1\" />");

//                        ProjectReferenceArea_sb.AppendLine("    <ProjectReference Include=\"" + $"..\\{NameSpace}.DataAccess\\{NameSpace}.DataAccess.csproj" + "\" />");
//                        ProjectReferenceArea_sb.AppendLine("\t    <ProjectReference Include=\"" + $"..\\{NameSpace}.Model\\{NameSpace}.Model.csproj" + "\" />\r\n");
//                        FolderName = $"{NameSpace}.ViewModel";
//                        ProjectName = $"{NameSpace}.ViewModel.csproj";
//                        break;
//                    case ProjectType.View:
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Microsoft.Xaml.Behaviors.Wpf\" Version=\"1.1.31\" />");
//                        PackageReferenceArea_sb.AppendLine("    <PackageReference Include=\"Vampirewal.Core\" Version=\"1.0.0.1\" />");

//                        ProjectReferenceArea_sb.AppendLine("    <ProjectReference Include=\"" + $"..\\{NameSpace}.ViewModel\\{NameSpace}.ViewModel.csproj" + "\" />");
//                        ProjectReferenceArea_sb.AppendLine("\t    <ProjectReference Include=\"" + $"..\\{NameSpace}.Model\\{NameSpace}.Model.csproj" + "\" />");
//                        FolderName = $"{NameSpace}.View";
//                        ProjectName = $"{NameSpace}.View.csproj";
//                        break;
//                    default:
//                        break;
//                }


//                ProjectString = sr.ReadToEnd();

//                ProjectString = ProjectString.Replace("${OutputType}", outputType)
//                                             .Replace("${ProjectReferenceArea}", ProjectReferenceArea_sb.ToString())
//                                             .Replace("${PackageReferenceArea}", PackageReferenceArea_sb.ToString());
//            }

//            if (!string.IsNullOrEmpty(ProjectString))
//            {
//                if (!Directory.Exists($"{SavePath}\\{FolderName}"))
//                {
//                    Directory.CreateDirectory($"{SavePath}\\{FolderName}");
//                }

//                StreamWriter sw = new StreamWriter($"{SavePath}\\{FolderName}\\{ProjectName}", false, Encoding.UTF8);
//                sw.Write(ProjectString);
//                sw.Close();


//            }


//        }

//        public static void CreateSolution(string NameSpace, string SavePath)
//        {
//            string Solution_templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Template\\SolutionTemplate.txt";
//            if (!File.Exists(Solution_templatePath))
//            {
//                //提示错误信息
//            }
//            string SolutionGuid = Guid.NewGuid().ToString().ToUpper();

//            string SolutionStr = string.Empty;

//            StringBuilder ProjectArea_sb = new StringBuilder();

//            using (StreamReader sr = new StreamReader(Solution_templatePath))
//            {
//                ProjectArea_sb.AppendLine("Project(\"{${ProjectGuid}}\") = \"${NameSpace}.Model\", \"${NameSpace}.Model\\${NameSpace}.Model.csproj\", \"{${ModelGuid}}\"");
//                ProjectArea_sb.AppendLine("EndProject");

//                ProjectArea_sb.AppendLine("Project(\"{${ProjectGuid}}\") = \"${NameSpace}.DataAccess\", \"${NameSpace}.DataAccess\\${NameSpace}.DataAccess.csproj\", \"{${DataAccessGuid}}\"");
//                ProjectArea_sb.AppendLine("EndProject");

//                ProjectArea_sb.AppendLine("Project(\"{${ProjectGuid}}\") = \"${NameSpace}.ViewModel\", \"${NameSpace}.ViewModel\\${NameSpace}.ViewModel.csproj\", \"{${ViewModelGuid}}\"");
//                ProjectArea_sb.AppendLine("EndProject");

//                ProjectArea_sb.AppendLine("Project(\"{${ProjectGuid}}\") = \"${NameSpace}.View\", \"${NameSpace}.View\\${NameSpace}.View.csproj\", \"{${ViewGuid}}\"");
//                ProjectArea_sb.AppendLine("EndProject");

//                SolutionStr = sr.ReadToEnd();

//                SolutionStr = SolutionStr.Replace("${SolutionGuid}", SolutionGuid)
//                                         .Replace("${ProjectArea}", ProjectArea_sb.ToString())
//                                         .Replace("${ProjectGuid}", Guid.NewGuid().ToString().ToUpper())
//                                         .Replace("${ModelGuid}", Guid.NewGuid().ToString().ToUpper())
//                                         .Replace("${DataAccessGuid}", Guid.NewGuid().ToString().ToUpper())
//                                         .Replace("${ViewModelGuid}", Guid.NewGuid().ToString().ToUpper())
//                                         .Replace("${ViewGuid}", Guid.NewGuid().ToString().ToUpper())
//                                         .Replace("${NameSpace}", NameSpace);
//            }

//            if (!Directory.Exists($"{SavePath}"))
//            {
//                Directory.CreateDirectory($"{SavePath}");
//            }


//            using (StreamWriter sw = new StreamWriter($"{SavePath}\\{NameSpace}.sln", false, Encoding.UTF8))
//            {
//                sw.Write(SolutionStr);
//            }


//        }

//        public static void CreateView(string NameSpace, string SavePath)
//        {
//            CreateAPP(NameSpace, SavePath);


//        }


//        private static void CreateAPP(string NameSpace, string SavePath)
//        {
//            string appcsTemplate = GetTemplate("AppCSTemplate");
//            appcsTemplate = appcsTemplate.Replace("${NameSpace}", NameSpace);
//            string appXAMLTemplate = GetTemplate("AppXAMLTemplate");
//            appXAMLTemplate = appXAMLTemplate.Replace("${NameSpace}", NameSpace);

//            if (!Directory.Exists($"{SavePath}\\{NameSpace}.View"))
//            {
//                Directory.CreateDirectory($"{SavePath}\\{NameSpace}.View");
//            }

//            using (StreamWriter sw = new StreamWriter($"{SavePath}\\{NameSpace}.View\\App.xaml", false, Encoding.UTF8))
//            {
//                sw.Write(appXAMLTemplate);
//            }

//            using (StreamWriter sw = new StreamWriter($"{SavePath}\\{NameSpace}.View\\App.xaml.cs", false, Encoding.UTF8))
//            {
//                sw.Write(appcsTemplate);
//            }
//        }

//        /// <summary>
//        /// 获取模版文件并转成string
//        /// </summary>
//        /// <param name="FileName">文件名称</param>
//        /// <returns>string</returns>
//        private static string GetTemplate(string FileName)
//        {
//            Assembly assembly = Assembly.GetExecutingAssembly();

//            string[] resNames = assembly.GetManifestResourceNames();
//            using (Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.Template.{FileName}.txt"))
//            {
//                using (StreamReader sr = new StreamReader(stream))
//                {
//                    return sr.ReadToEnd();
//                }
//            }
//        }
//        #endregion


//    }

//    public class ModelClass
//    {
//        public string ClassName { get; set; }

//        public string ClassNeiRong { get; set; }
//    }


//    /// <summary>
//    /// 创建工程的时候，工程类型
//    /// </summary>
//    public enum ProjectType
//    {
//        /// <summary>
//        /// model层
//        /// </summary>
//        Model = 0,
//        /// <summary>
//        /// DataAccess层
//        /// </summary>
//        DataAccess = 1,
//        /// <summary>
//        /// ViewModel层
//        /// </summary>
//        ViewModel = 2,
//        /// <summary>
//        /// View层
//        /// </summary>
//        View = 3
//    }
//}
